######################################################
# 一元随机数
######################################################

# 均匀分布
set.seed(1)
runif(3, 1, 3) #3个，最小值1，最大值3
# 正态分布
rnorm(5, 10, 5) #5个，均值10，方差5
# 指数分布
rexp(100, 1/10) #100个，lamda=1/10，均值为10
# 二项分布
rbinom(10, 1, 0.5) #10个，实验次数1，概率0.5的伯努利实验
rbinom(10, 100, 0.5) #10个，B(100,0.5)的二项分布

# r 生成分布的随机数
# d 生成分布的密度函数
# p 生成分布的累计概率密度函数
# q 生成分布的分位数函数


#eg
# 均匀分布
Nsim = 10^3
x = runif(Nsim)
x1 = x[-Nsim]
x2 = x[-1]
par(mfrow = c(1,3))
hist(x, prob=T, col=gray(0.3), main="uniform on [0, 1]")
curve(dunif(x, 0, 1), add=T, col="red")
plot(x1, x2, col="red")
acf(x)
par(mfrow = c(1,1))

# 正态分布
x = rnorm(100)
hist(x, prob=T, main="normal mu=0, sigma=1")
curve(dnorm(x), add=T)

# 指数分布
x = rexp(100, 1/10)
hist(x, prob=T, col=gray(0.9), main="均值为10的指数分布")
curve(dexp(x, 1/10), add=T)

# 二项分布
par(mfrow=c(1,3))
p=0.25
for(n in c(10, 25, 50))
{
  x=rbinom(100, n, p)
  hist(x, prob=T, main=paste("n = ", n))
  xvals=0:n
  points(xvals, dbinom(xvals, n, p), type="h", lwd=3)
}